package com.um.jdy.rpc.notify;

import com.um.jdy.rpc.entity.EBoxDeviceInfo;
import com.um.jdy.rpc.entity.EBoxPort;
import com.um.jdy.rpc.enums.DeviceIotEnum;
import com.um.jdy.rpc.enums.EBExceptionEnum;

import java.util.List;

/**
 * 电单车充电桩
 * 设备调用平台RPC
 *
 * @author 邓南辉
 * 日期 2023/5/18
 * 版权所有 广州优匠科技有限公司
 */
public interface RpcEBoxDeviceNotifyService {

    /**
     * 设备登录上报
     * @param seq 序列号
     * @param imei IMEI码
     * @param ports 端口列表
     * @param info 设备信息
     */
    void reqDeviceLogin(String command, String seq, String imei, List<EBoxPort> ports, EBoxDeviceInfo info);

    /**
     * 设备离线上报
     * @param imei IMEI码
     */
    void reqDeviceOffline(String imei);

    /**
     * 设备心跳上报
     * @param seq 序列号
     * @param imei IMEI码
     * @param ports 端口列表
     * @param info 设备信息
     */
    void reqDeviceHeart(String command, String seq, String imei, List<EBoxPort> ports, EBoxDeviceInfo info);

    /**
     * 实时上报充电数据(健思研才有)
     * @param seq 序列号
     * @param imei IMEI码
     * @param ports 端口列表
     * @param device 充电总数据
     */
    void reqChargingData(String command, String seq, String imei, String protocol, List<EBoxPort> ports, EBoxDeviceInfo device);

    /**
     * 设备物联网状态上报
     * @param imei
     * @param status
     */
    void reqDeviceIotStatus(String imei, DeviceIotEnum status);

    /**
     * 故障上报
     * @param imei
     * @param port
     * @param exception
     */
    void reqException(String imei, Integer port, EBExceptionEnum exception);

    /**
     * 故障解除
     * @param imei
     * @param port
     * @param exception
     */
    void reqRemoveException(String imei, Integer port, EBExceptionEnum exception);

    /**
     * 回复端口状态查询
     * @param seq 序列号
     * @param imei IMEI码
     * @param ports 端口列表
     */
    void respQueryPorts(String command, String seq, String imei, List<EBoxPort> ports);

    /**
     * 回复语音播放
     * @param seq 序列号
     * @param imei IMEI码
     */
    void respPlayTTS(String command, String seq, String imei);

    /**
     * 回复设备重启
     * @param seq 序列号
     * @param imei IMEI码
     */
    void respRestart(String command, String seq, String imei);

    /**
     * 回复参数设置
     * @param seq 序列号
     * @param imei IMEI码
     */
    void respSetParams(String command, String seq, String imei);

}
